package main

import "fmt"

func main() {
	/**1. 可以使用任何类型或表达式作为条件语句
	2. 不需要写break，一旦条件符合自动终止
	3. 如希望继续执行下一个case，需使用fallthrough语句
	4. 支持一个初始化表达式（可以是并行方式），右侧需跟分号
	5. 左大括号必须和条件语句在同一行
	*/
	a := 2;
	switch a {
	case 0:
		fmt.Println("0")
	case 1:
		fmt.Println("1")
	case 2:
		fmt.Println("2")
		fallthrough //不需要判断下一个case条件是否符合，直接执行代码，记得是下一个case而已！！！
	case 3:
		fmt.Println("3")
	case 4:
		fmt.Println("4")
	default:
		fmt.Println("None")
	}

	/*省略switch 后的变量名，则默认为boolean,case就要用boolean值，或则boolean表达式*/
	/*go switch case可以使用表达式，而不只是常量/常量表达式*/
	switch {
	case a < 0:
		fmt.Println("0")
	case a < 1:
		fmt.Println("1")
	case a < 2:
		fmt.Println("2")
		fallthrough //不需要判断下一个case条件是否符合，直接执行代码，记得是下一个case而已！！！
	case a < 3:
		fmt.Println("3")
	case a < 4:
		fmt.Println("4")
	default:
		fmt.Println("None")
	}

	switch b := 2; { //使用初始化赋值记得加分号啊，大哥
	case b < 0:
		fmt.Println("0")
	case b < 1:
		fmt.Println("1")
	case b < 2:
		fmt.Println("2")
	case b < 3:
		fmt.Println("3")
	case b < 4:
		fmt.Println("4")
	default:
		fmt.Println("None")
	}

}
